﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using M2B.GestionEntretiens.Contracts;
using M2B.GestionEntretiens.DAL;
using M2B.GestionEntretiens.POCOS;
using M2B.GestionEntretiens.BLL;

namespace M2B.GestionEntretiens.Services
{
    /// <summary>
    /// Cette classe implémente le contrat candidat service
    /// </summary>
    /// <remarks>
    /// Informations de la classe : 
    /// <list type="bullet">
    /// <item name="authors">Auteur : M2B : Maher SAMMARI</item>
    /// <item name="creation date">Date de création : 02/04/2014</item>
    /// <item name="last modification">Date de dernière modification : 02/04/2014</item>
    /// </list>
    /// </remarks>
    public class CandidatsService : ICandidatsService
    {
        private readonly IUnitOfWork _unitOfWorky;
        private readonly CandidatsManager _candidatsManager;

        public CandidatsService(IUnitOfWork unitOfWork)
        {
            _unitOfWorky = unitOfWork;
            _candidatsManager = new CandidatsManager(_unitOfWorky);

        }
        /// <summary>
        /// C'est un exemple pour le test d'acheminement 
        /// TODO : A Enlever ;)
        /// </summary>
        public string DoWork()
        {
            return _unitOfWorky.World;
        }
        /// <summary>
        /// Récupération des candidats
        /// </summary>
        /// <returns>IEnumerable Candidat </returns>
        public IEnumerable<Candidat> GetCandidats()
        {
            return _candidatsManager.GetCandidats();

        }

        /// <summary>
        /// Suppression d'un candidat
        /// </summary>
        /// <param name="candidatId">Id</param>
        public void DeleteCandidat(int candidatId)
        {
           _candidatsManager.DeleteCandidat(candidatId);
        }
        /// <summary>
        /// Ajout d'un nouveau candidat
        /// </summary>
        /// <param name="candidat">Candidat</param>
        public void AddCandidat(Candidat candidat)
        {
            _candidatsManager.AddCandidat(candidat);
        }
        /// <summary>
        /// Mise à jour d'un candidat
        /// </summary>
        /// <param name="candidat">Candidat</param>
        public void UpdateCandidat(Candidat candidat)
        {
            _candidatsManager.UpdateCandidat(candidat);
        }
    }
}